home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple II Magazines (DO)
/
Micro on the Apple Volume 2 (1981)(Micro Ink).zip
/
Micro on the Apple Volume 2 (1981)(Micro Ink).do
/
FNPLOTTER.bas
< prev
next >
Wrap
BASIC Source File
|
1996-12-24
|
5KB
|
185 lines
10 REM ************************
12 REM * *
14 REM * FUNCTION PLOTTER *
16 REM * DAVID P. ALLEN *
18 REM * *
20 REM * FNPLOTTER *
22 REM * *
24 REM * COPYRIGHT (C) 1981 *
26 REM * MICRO INK, INC. *
28 REM * CHELMSFORD, MA 01824 *
30 REM * ALL RIGHTS RESERVED *
32 REM * *
34 REM ************************
140 REM
150 REM
180 REM THIS PROGRAM PLOTS A
190 REM CURVE FOR ANY EXPRESSION
200 REM AS A FUNCTION OF INCREAS-
210 REM ING ANGLE FROM 1 TO 360
220 REM DEGREES.
230 REM CHANGE LINE 1010 TO A
240 REM FUNCTION YOU WISH TO
250 REM PLOT.
260 REM
270 REM
280 REM *** DEFINE FUNCTIONS ***
290 REM
300 DEF FN SCH(X) = 2/( EXP(X) + EXP( -X)): REM SECH(X)
310 DEF FN CCH(X) = 2/( EXP(X) - EXP( -X)): REM CSCH (X)
320 DEF FN CTH(X) = EXP( -X)/( EXP(X) - EXP( -X)) *2 +1: REM COTH(X)
330 DEF FN SEC(X) = 1/ COS(X): DEF FN CSC(X) = 1/ SIN(X): DEF FN COT(X) = 1/ TAN(X)
340 DEF FN SNH(X) = ( EXP(X) - EXP( -X))/2: REM SINH(X)
350 DEF FN COH(X) = ( EXP(X) + EXP( -X))/2: REM COSH(X)
360 DEF FN TAH(X) = - EXP( -X)/( EXP(X) + EXP( -X)) *2 +1: REM TANH(X)
370 REM
380 REM
390 REM ** PLOT GRAPH AXES **
400 REM
410 HOME
420 REM
430 REM MOVE CURSOR TO BOTTOM
440 REM LINE.
450 REM
460 VTAB 24
470 REM
480 HGR
490 HCOLOR= 7
500 HPLOT 0,80 TO 279,80
510 HPLOT 0,16 TO 0,143
520 FOR I = 0 TO 279 STEP 70
530 HPLOT I,78 TO I,82: HPLOT 279,78 TO 279,82
540 NEXT I
550 FOR I = 16 TO 144 STEP 16
560 HPLOT 0,I TO 4,I
570 NEXT I
580 REM
590 REM FLAGS FOR FIRST PLOT
600 REM AND SCALE.
610 REM
620 F = 0:G = 0
630 REM
640 REM R1 AND R2 MAY BE SET
650 REM FOR OTHER LIMITS.
660 REM
670 R1 = 1:R2 = 360
680 REM
690 REM
700 REM ** BEGIN PLOT **
710 REM
720 REM CHANGE STEP FOR MORE
730 REM OR LESS RESOLUTION.
740 REM IF R1>R2 THEN STEP
750 REM MUST BE NEGATIVE.
760 REM
770 FOR I = R1 TO R2 STEP 5
780 REM
790 REM NEXT 3 STEPS ESTABLISH
800 REM HORIZONTAL SCALE.
810 REM
820 IF ABS(R1) > = ABS(R2) THEN R = ABS(R1)
830 IF ABS(R2) > = ABS(R1) THEN R = ABS(R2)
840 IF G = 0 THEN S = 70 *4/R:G = 1
850 X = I:Y = 0
860 REM
870 REM CONVERTS DEGREES TO
880 REM RADIANS.
890 REM
900 X = X *3.14159/180
910 REM
920 REM PREVENTS CRASHING WHEN
930 REM X=0.
940 REM
950 IF X = 0 THEN X = .00001
960 REM
970 REM
980 REM NEXT LINE DESCRIBES
990 REM FUNCTION TO BE PLOTTED
1000 REM
1010 Y1 = SIN(X) + COS(2 *X)
1020 Y = Y +Y1
1030 Y = Y *20
1040 REM
1050 REM SCALES X
1060 REM
1070 X = I *S
1080 REM
1090 REM RELATES PLOT TO X AXIS
1100 REM
1110 Y = -Y +80
1120 REM
1130 REM SUBROUTINE PREVENTS
1140 REM OFF-SCALE CRASHING.
1150 REM
1160 GOSUB 1830
1170 REM
1180 REM PLOTS FIRST POINT.
1190 REM
1200 IF F = 0 THEN HPLOT X,Y:F = 1
1210 HPLOT TO X,Y
1220 NEXT I
1230 PRINT : LIST 1010
1240 REM
1250 REM BLANKS OUT LINE #
1260 REM AFTER LISTING
1270 REM LINE 1010.
1280 REM
1290 POKE 1616,160: POKE 1617,160: POKE 1618,160: POKE 1619,160
1300 REM
1310 REM WAITING FOR YOUR PLEASURE!
1320 REM PUNCH 'RETURN'
1330 REM TO CONTINUE!
1340 REM
1350 POKE -16368,0: WAIT -16384,128
1360 REM
1370 REM
1380 REM THROWS PREVIOUS KEYSTROKE
1390 REM AWAY WITH
1400 REM 'GET Z$'!
1410 REM
1420 GET Z$
1430 REM
1440 REM CLEAR SCREEN AND
1450 REM PRINT FUNCTIONS FOR
1460 REM REMINDER.
1470 REM
1480 TEXT : HOME
1490 PRINT TAB( 9);"SECANT = FN SEC(X)"
1500 PRINT TAB( 9);"COSEC = FN CSC(X)"
1510 PRINT TAB( 9);"COTAN = FN COTAN(X)"
1520 PRINT TAB( 9);"SINH = FN SNH(X)"
1530 PRINT TAB( 9);"COSH = FN COH(X)"
1540 PRINT TAB( 9);"TANH = FN TAH(X)"
1550 PRINT TAB( 9);"SECH = FN SCH(X)"
1560 PRINT TAB( 9);"CSCH = FN CCH(X)"
1570 PRINT TAB( 9);"COTH = FN CTH(X)"
1580 REM
1590 REM NOW WE SET UP LINE
1600 REM 1010 FOR EDITING.
1610 REM 'POKE 32, 2' MOVES
1620 REM MARGIN SO CURSOR CAN
1630 REM FIT IN FRONT.
1640 REM
1650 VTAB (12)
1660 PRINT " CHANGE LINE 1010 AS DESIRED AND"
1670 PRINT "RUN AGAIN!"
1680 POKE 32,2
1690 LIST 1010
1700 REM
1710 REM NOW WE RESTORE MARGIN
1720 REM AND MOVE CURSOR IN
1730 REM FRONT OF LINE #.
1740 REM
1750 POKE 32,0
1760 POKE 37,13: POKE 36,0
1770 REM
1780 END
1790 REM
1800 REM SCALE ANTI-CRASHING
1810 REM SUBROUTINE.
1820 REM
1830 IF X <0 THEN X = 0
1840 IF X >279 THEN X = 279
1850 IF Y <0 THEN Y = 0
1860 IF Y >159 THEN Y = 159
1870 RETURN